package com.trkj.controller;

import java.io.IOException;
import java.util.List;

import javax.annotation.Resource;
import javax.servlet.http.HttpServletResponse;

import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestParam;
/**
 * 菜单角色控制器
 * @author 吴山峰
 *
 */
import org.springframework.web.bind.annotation.ResponseBody;
import org.springframework.web.bind.annotation.SessionAttributes;

import com.trkj.pojo.Menurole;
import com.trkj.service.MenuRoleService;
import com.trkj.utils.DataGrid;
import com.trkj.vo.EmpVo;
import com.trkj.vo.PermissionsVo;
@Controller
@SessionAttributes({"emp", "funcIds"})
public class MenuRoleController {
	@Resource(name = "menuRoleService")
	MenuRoleService menuRoleService;//自动注入menuRoleService
	
	/**
	 * 前往菜单角色管理 MenuRoleInfo.jsp 页面
	 */
	@RequestMapping("/to_menuRole")
	public String toMenuRoleInfo() {
		return "MenuRoleInfo";
	}
	/**
	 * 前往 创建菜单角色CreateMenuRole.jsp 页面
	 */
	@RequestMapping("/to_createMenuRole")
	public String toCreateMenuRoleInfo() {
		return "CreateMenuRole";
	}
	/**
	 * 前往功能树FunctionTree.jsp 页面
	 */
	@RequestMapping("/to_functionTree")
	public String tofunctionTree() {
		return "FunctionTree";
	}
	/**
	 * 前往指定用户界面GiveRoleIsEmp.jsp
	 */
	@RequestMapping("/to_GiveRoleIsEmp")
	public String toGiveRoleIsEmp() {
		return "GiveRoleIsEmp";
	}
	/**
	 * 前往菜单详情界面MenuRoleDesc.jsp
	 */
	@RequestMapping("/to_MenuRoleDesc")
	public String to_MenuRoleDesc() {
		return "MenuRoleDesc";
	}
	/**
	 * 查询所有菜单角色||根据条件查询部分菜单角色
	 */
	@RequestMapping("/get_menuRole")
	public @ResponseBody DataGrid queryMenuRoleInfo(String roleName, Integer page, Integer rows,
			@RequestParam(required=false,defaultValue="roleId") String sort,
			@RequestParam(required=false,defaultValue="desc") String order) {
		return menuRoleService.queryMenuRoleInfo(roleName, page, rows, sort, order);
		 
	}
	/**
	 * 编辑/新建 菜单角色
	 */
	@RequestMapping("/edit_menuRole")
	public @ResponseBody boolean editMenuRole(Menurole menurole) {
		System.out.println(menurole.getRoleName()+"---"+menurole.getRoleId()+"---"+menurole.getRoleState());
		return menuRoleService.editMenuRole(menurole);
	}
	/**
	 * 删除菜单角色
	 */
	@PostMapping("/remove_menuRole")
	public void removeMenuRole(Menurole menurole,HttpServletResponse response) {
		System.out.println(menurole.getRoleId()+"=="+menurole.getRoleState());
		boolean removeMenuRole = menuRoleService.removeMenuRole(menurole);
		try {
			response.getWriter().write(removeMenuRole+"");
		} catch (IOException e) {
			e.printStackTrace();
		}
	}
	/**
	 * 查询角色所有的权限
	 * 当对象里面包含 一对多的关系使 --》list<xxx>直接返回json会导致只有一个list结果 其他的找不到
	 * @return 
	 */
	@RequestMapping("/get_AllFunction")
	@ResponseBody
	public Object queryAllFunctionByRoleId(Integer roleid) {
		/*String json = JSON.toJSONStringWithDateFormat(menuRoleService.queryAllFunctionByRoleId(10010), "yyyy-MM-dd HH:mm:ss", SerializerFeature.DisableCircularReferenceDetect);
		JSONObject json_test = JSONObject.parseObject(json);*/
		return menuRoleService.queryAllFunctionByRoleId(roleid);
	}
	/**
	 * 给角色分配权限
	 */
	@RequestMapping("/give_MenuRolePermissions")
	public @ResponseBody boolean giveMenuRolePermissions(Integer roleid, String perids) {
		return menuRoleService.giveMenuRolePermissions(roleid, perids);
	}
	/**
	 * 根据角色id和部门id查询员工信息，有对应角色的则标为选中状态
	 * @return 
	 */
	@RequestMapping("/get_EmpInfoByRoleId")
	@ResponseBody
	public Object queryEmpByRoleid(Integer roleid) {
		return menuRoleService.queryEmpByRoleid(roleid);
	}
	/**
	 * 给角色指定用户
	 * @return 
	 */
	@RequestMapping("/give_MenuRoleEmp")
	public @ResponseBody boolean giveMenuRoleEmp(Integer roleid, String empids) {
		 return menuRoleService.giveMenuRoleEmp(roleid, empids);
	}
	/**
	 * 查询角色的权限信息
	 */
	@RequestMapping("/get_MenuRolePerDesc")
	@ResponseBody
	public List<PermissionsVo> findMenuRolePerDesc(Integer roleid) {
		return menuRoleService.findMenuRolePerDesc(roleid);
	}
	/**
	 * 查询角色的用户信息
	 */
	@RequestMapping("/get_MenuRoleEmpDesc")
	@ResponseBody
	public List<EmpVo> findMenuRoleEmpDesc(Integer roleid) {
		return menuRoleService.findMenuRoleEmpDesc(roleid);
	}
}
